package net.dopan.pigframe.demo.mapper;

import net.dopan.pigframe.core.base.dao.BaseDao;
import net.dopan.pigframe.demo.model.entity.UserConcernUser;
import net.dopan.pigframe.demo.model.entity.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface UserConcernUserMapper extends BaseDao<UserConcernUser> {
    /**
     * 获取用户信息
     */
  UserVo findUserVoByUserId(@Param("userId") String userId);

    /**
     * 获取用户笔记
     */
    List<UserNoteVo> findUserNoteVoByUserId(@Param("userId") String userId, @Param("offset") Integer offset, @Param("limit") Integer limit);

    /**
     * 获取用户收藏的活动
     */
   List<Map<String, String>> findUserCollectMap(@Param("userId") String userId);

    /**
     * 添加关注
     */
    Integer concernUser(@Param("userId") String userId, @Param("concernUserId") String concernUserId, @Param("concernUsername") String concernUsername);

    /**
     * 取消关注
     */
    Integer cancleConcernUser(@Param("userId") String userId, @Param("concernUserId") String concernUserId);

    /**
     * 查询用户关注数量
     */
    Integer concernCount(@Param("userId") String userId);

    /**
     * 查询用户粉丝数量
     */
    Integer fansCount(@Param("userId") String userId);

    /**
     * 更新用户关注数量
     */
    void updateUserConcernNum(@Param("concernNum") Integer concernNum, @Param("userId") String userId);

    /**
     * 添加粉丝
     */
    Integer addfans(@Param("userId") String userId, @Param("fansUserId") String fansUserId, @Param("fansUsername") String fansUsername);

    Integer reduceFans(@Param("userId") String userId, @Param("fansUserId") String fansUserId);

    /**
     * 更新用户粉丝数量
     */
    void updatefansNum(@Param("fansNum") Integer concernNum, @Param("userId") String userId);

    /**
     * 获取用户昵称
     */
    String findUsernameById(@Param("userId") String userId);

    /**
     * 查询是否关注
     */
    Integer isConcern(@Param("userId") String userId, @Param("concernUserId") String concernUserId);

    /**
     * 查询关注的人
     */
   List<Map<String, String>> getConcernUsers(@Param("userId") String userId);

    /**
     * 查询关注的人
     */
   List<Map<String, String>> getUserFans(@Param("userId") String userId);

    /**
     * 获取用户参加的已经结束了的活动
     */
    List<Map<String, String>> getFinishUserActivityByUserId(@Param("userId") String userId);

    /**
     * 获取用户参加的未结束的活动
     */
    List<Map<String, String>> getUserActivityByUserId(@Param("userId") String userId);

    /**
     * 根据日期获取用户参加的活动
     */
    List<Map<String, String>> getUserActivityByDate(@Param("userId") String userId, @Param("date") Date date);

    /**
     * 根据日期获取用户收藏的活动
     */
    List<Map<String, String>> getUserActivityCollectByDate(@Param("userId") String userId, @Param("date") Date date);

    /**
     * 取消活动
     */
    Integer cancleUserActivity(@Param("userId") String userId, @Param("activityId") String activityId);

    /**
     * 获取用户发起的活动(未结束)
     */
    List<Map<String, String>> getLaunchActivity(@Param("userId") String userId);

    /**
     * 获取用户发起的活动(已结束)
     */
    List<Map<String, String>> getEndActivity(@Param("userId") String userId);

    /**
     * 根据日期获取用户发起的活动
     */
    List<Map<String, String>> getLaunchActivityByDate(@Param("userId") String userId, @Param("date") Date date);

    /**
     * 删除用户自己发起的活动
     */
    Integer delUserActivityByUser(@Param("userId") String userId, @Param("activityId") String activityId);

    /**
     * 查询用户编辑的活动
     */
    UserActivityVo1 findUserActivityVo1(@Param("activityId") String activityId);

    /**
     * 获取用户感兴趣的未结束的活动
     */
    List<Map<String, String>> getLikeUserActivity(@Param("userId") String userId);

    /**
     * 根据日期获取用户感兴趣的活动
     */
    List<Map<String, String>> getLikeUserActivityByDate(@Param("userId") String userId, @Param("date") Date date);

    /**
     * 获取用户感兴趣的结束的活动
     */
    List<Map<String, String>> getFinishLikeUserActivity(@Param("userId") String userId);

    /**
     * 删除用户感兴趣的活动
     */
    Integer delLikeUserActivity(@Param("userId") String userId, @Param("activityId") String activityId);

    /**
     * 保存意见反馈
     */
    Integer saveUserFeedBack(UserFeedbackVo userFeedbackVo);

    /**
     * 修改用户UUID
     */
    Integer changUserUUID(@Param("userId") String userId, @Param("uuid") String uuid);

    /**
     * 查询用户是否修改过UUID
     */
    Integer findUserUUIDFlag(@Param("userId") String userId);

    /**
     * 获取活动取消原因
     */
    List<Map<String, String>> getCancleReason();

    /**
     * 保存用户活动取消原因
     */
    Integer saveUserActivityCancle(UserActivityCancleVo userActivityCancleVo);

    /**
     * 获取用户动态
     */
    List<Map<String, String>> getUserEvent(@Param("userId") String userId, @Param("offset") Integer offset, @Param("limit") Integer limit);

    /**
     * 查询个人动态中发布的活动
     */
    List<Map<String, String>> getEventActivity(@Param("activityId") String activityId,@Param("userId")String userId);

    /**
     * 查询个人动态中发布的笔记
     */
    List<Map<String, String>> getEventUserNote(@Param("noteId") String noteId);

    List<EventUserNoteVo> getEventUserNoteMap(@Param("noteId") String noteId,@Param("userId")String userId);
}
